import re

def mobile(mobile_str):
    '''
    验证手机号格式
    :param mobile_str:
    :return:
    '''
    if re.match(r'^1[3-9]\d{9}$',mobile_str):
        return mobile_str
    else:
        raise ValueError('{} is not a vaild mobile'.format(mobile_str))


def regex(pattern):
    '''
    正则校验
    :param pattern: str 正则表达式
    :return: 返回一个函数
    '''
    def validate(value_str):
        '''
        具体校验一个字符串 根据自定义的正则表达式
        :param value_str:
        :return:
        '''
        if re.match(pattern, value_str):
            return value_str
        else:
            raise ValueError('{} is invalib params.'.format(value_str))
    return validate

def email(email_str):
    '''
        验证手机号格式
        :param mobile_str:
        :return:
        '''
    if re.match(r"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$", email_str):
        return email_str
    else:
        raise ValueError('{} is not a vaild email'.format(email_str))